/*
 * Author Rafael Douglas,Thiago Valentim e Maria Camila
 * */
package loja;

import interfaces.IServidorConsultaIndices;
import interfaces.IServidorLoja;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import basicas.Cartao;
import dados.BancoDeDadosServidorCentral;




public class ServidorLoja extends UnicastRemoteObject implements  IServidorLoja
{
	private static final long serialVersionUID = 1L;
	public IServidorConsultaIndices si;
	public BancoDeDadosServidorCentral bc;
	
	public ServidorLoja() throws RemoteException
	{
		bc = new BancoDeDadosServidorCentral();
		ServidorLoja serv = new ServidorLoja();
		String objname = "rmi://localhost/ServidorAdmnistrador";
        System.out.println("procurando pelo objeto: "+ objname);
        try {
			serv.si = (IServidorConsultaIndices) Naming.lookup(objname);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public boolean realizarCompra(String numero, String senha, String descricao, float valor, String moeda) throws ClassNotFoundException
	{
		Cartao objCartao = bc.getCartao(numero);
		boolean b = false;
		if(senha != objCartao.getSenha())
		{
			b= false;
		}
		else
		{
			if(moeda.equals("REAL"))
			{
				objCartao.inserirCompra(descricao, valor);
				bc.atualizarCartao(objCartao);
				b = true;
			}
			else if(moeda.equals("EURO"))
			{
				try {
					float valorReal = si.converterEuroReal(valor);
					objCartao.inserirCompra(descricao, valorReal);
					bc.atualizarCartao(objCartao);
					b = true;
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			else if(moeda.equals("Dolar"))
			{
				try {
					float valorReal = si.converterDolarReal(valor);
					objCartao.inserirCompra(descricao, valorReal);
					bc.atualizarCartao(objCartao);
					b = true;
				} catch (RemoteException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return b;
	}

}
